iT邦幫忙

0

Docker [筆記] Window10 + 建立Golang(Gin+GORM套件) + MySQL

  • 分享至 

  • xImage
  •  

1. Docker安裝 + 使用Docker安裝Golang + 網路

Docker是為了讓我之後寫後端+DB方便使用,但是
Docker裝完之後一直強迫被關閉,WSL出事

  1. Window10 家用版 WSL難裝到哭,原來是主機板要開啟虛擬化功能,方法如下(打開Svm mode)
    https://www.asus.com/tw/support/FAQ/1043786/

  2. 再裝一次Docker

  3. golang環境建立
    3-1建立專案資料夾 > 3-2終端機安裝golang > 3-3檢查

看目前建立的pod

    docker ps

使用Docker安裝Golang images

    docker pull golang

檢查

    docker images

https://ithelp.ithome.com.tw/upload/images/20231226/20137684r2dvECxmLM.png
https://ithelp.ithome.com.tw/upload/images/20231226/201376848FR17mapqn.png

  1. 建立docker網路
    由於docer容器內的服務不相連,所以必須建立一個網路,使DB與GO相連
    port只是我的本機與他們相連的管道,但他們彼此間不相通
    https://ithelp.ithome.com.tw/upload/images/20240110/20137684ijzD32n5Sf.png
exit // 跳出容器,因為是建立服務
docker network create web // 建立連線 web=網路名稱
docker network ls // 檢查目前有哪些連線

https://ithelp.ithome.com.tw/upload/images/20240110/20137684Chpl9cWh8o.png

  1. 建立一個有網域的golang容器container
    run -itd -p 8080:8080 -v 同步程式碼
    C:/Users/user/Desktop/demo/golang_spyy 與這個資料夾位置同步(本機的資料夾)
    :/go/src 容器內的路徑
    --name golang_spy_backend 容器名稱
    golang images名稱
    --network web 使用web是因為她是網域名稱
docker run -itd -p 8080:8080 -v C:/Users/user/Desktop/demo/golang_spy:/go/src --name golang_spy_backend --network web golang

https://ithelp.ithome.com.tw/upload/images/20240110/20137684P1AFqYWuc6.png

  1. 啟動containers golang的專案
    https://ithelp.ithome.com.tw/upload/images/20231226/201376848wmytj5Xfi.png

  2. 確定可以用之後,在docker裡面建立一個虛擬的資料夾
    (簡單說就是看不到幻想的資料夾,這個資料夾會跟我本機電腦同步)

  3. 終端機看 CONTAINER ID

    docker ps 
  1. 進去看CONTAINER資料夾結構(進容器)
docker exec -i -t 5e7c63f0fd25 bash

https://ithelp.ithome.com.tw/upload/images/20240103/20137684Fk1TS2gOb8.png
https://ithelp.ithome.com.tw/upload/images/20240103/20137684m0ieJWNiEO.png

進去容器後,在本機的相對位置增加資料夾,在終端機上也可以看到虛擬資料夾內也有這個資料夾
9. 看資料夾就知道已連動
10. VsCode裝golang套件
https://ithelp.ithome.com.tw/upload/images/20240103/201376849RcmBplRcK.png
11. Docker裝"管理專案套件"的套件,記得先進去虛擬資料夾
https://ithelp.ithome.com.tw/upload/images/20240103/20137684DXKEAEVVSH.png
https://ithelp.ithome.com.tw/upload/images/20240103/20137684lhurrFeZvh.png

go mod init golang_spy

2. Docker裝MySQL (此為開新服務,非套件,故無需進入容器)

  1. 如果在容器內,出容器
    https://ithelp.ithome.com.tw/upload/images/20240108/20137684gfdfISazp3.png

  2. 建立docker網路
    由於docer容器內的服務不相連,所以必須建立一個網路,使DB與GO相連
    port只是我的本機與他們相連的管道,但他們彼此間不相通
    https://ithelp.ithome.com.tw/upload/images/20240110/20137684ijzD32n5Sf.png

exit // 跳出容器,因為是建立服務
docker network create web // 建立連線 web=網路名稱
docker network ls // 檢查目前有哪些連線

https://ithelp.ithome.com.tw/upload/images/20240110/20137684Chpl9cWh8o.png

  1. 建立MySQL的存放區(存放table,避免容器刪掉table被刪除,易言之永久貯存資料庫資料)
exit // 跳出容器,因為是建立服務

/var/lib/mysql 路徑,放跟MySQL同位置

docker create -v C:/Users/user/Desktop/demo/spy_Db --name spy_mysql_data mysql:5.7 
  1. 建立MySQL容器<----------如果有舊的刪掉,永遠最後做
    此處為建立建立管理員的帳號密碼
    預設帳號為:root
    --name some-mysql 資料庫名稱
    -v /my/own/datadir:/var/lib/mysql 本機的資料夾
    -e MYSQL_ROOT_PASSWORD=資料庫密碼
    -p 3306:3306 port號
    -d 跑背景,無須給參數
    --network web,前述3. 使用web是因為她是網域名稱
    --volumes-from spy_mysql_data,前述4. spy_mysql_data是之前建立MySQL的存放區的名稱
    mysql:5.7 版本號,5.7比較穩定(版本號一定放最後)
docker run --name spy_Db -v C:/Users/user/Desktop/demo/spy_Db -e MYSQL_ROOT_PASSWORD=irisiris -p 3306:3306 -d --network web --volumes-from spy_mysql_data mysql:5.7

https://ithelp.ithome.com.tw/upload/images/20240110/20137684vlF0w4gaK4.png

  1. 容器建立
    https://ithelp.ithome.com.tw/upload/images/20240110/20137684LQvyFAMbVT.png

  2. 進入容器
    https://ithelp.ithome.com.tw/upload/images/20240108/20137684H9vvaMKuUr.png

docker exec -i -t 7f26d119 bash
  1. 建立服務的帳號密碼步驟(與5.權限不同)
    8-1 進入2.設定的帳號
mysql -u root -p

8-2 輸入2.當時設定的密碼
進入畫面(此處之後都是下SQL語法)
https://ithelp.ithome.com.tw/upload/images/20240108/20137684Xo5ZUFQLa6.png
8-3 建立服務帳號密碼(SQL帳號密碼建立指令)
'test' 帳號
'test123' 密碼

CREATE USER 'test'@'%' IDENTIFIED BY 'test123';

8-4 開該服務權限

GRANT ALL ON *.* TO 'test'@'%'  WITH GRANT OPTION;

8-5 更改登入密碼的方式,用明碼

ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'test123';

https://ithelp.ithome.com.tw/upload/images/20240108/20137684XwNmg8j762.png

  1. 下載介面,建立DB及Table
    https://dev.mysql.com/downloads/workbench/
    9-1 DB名稱
    https://ithelp.ithome.com.tw/upload/images/20240108/20137684xTB4EUmv3X.png
    9-2 更改為"服務帳號" (前述5-3的帳號)
    https://ithelp.ithome.com.tw/upload/images/20240108/20137684F6934nEMQW.png
    https://ithelp.ithome.com.tw/upload/images/20240108/20137684MQrodkI0FD.png
    9-3 建立該專案使用DB
    https://ithelp.ithome.com.tw/upload/images/20240108/20137684NXwFSsgk4v.png
    9-4 建立表
    通常第一欄位都是要auto插入Primary Key及AI自動寫入,為了未來方便索引
    https://ithelp.ithome.com.tw/upload/images/20240118/20137684HISpB0B6dY.png
    欄位完成,並insert一筆資料
    https://ithelp.ithome.com.tw/upload/images/20240108/201376847dIW9HHHOA.png

3. Docker每次run golang的使用步驟

  1. 進去容器
    https://ithelp.ithome.com.tw/upload/images/20240104/20137684TMH1MCabq6.png
       docker exec -i -t 5e7c63f0fd25 bash
  1. 檢查目前的"本機資料夾"有沒有與"虛擬資料夾"連動
    https://ithelp.ithome.com.tw/upload/images/20240103/20137684Fk1TS2gOb8.png

https://ithelp.ithome.com.tw/upload/images/20240108/201376848DVwXAUGxY.png

https://ithelp.ithome.com.tw/upload/images/20240103/20137684m0ieJWNiEO.png

  1. run golang
      // main.go 本機檔案
      go run main.go

4. golang裝套件Gin(API使用)

  1. 進去go的容器(因為是go的套件)
    https://ithelp.ithome.com.tw/upload/images/20240104/20137684TMH1MCabq6.png
       docker exec -i -t 5e7c63f0fd25 bash
  1. 安裝API套件
    https://ithelp.ithome.com.tw/upload/images/20240104/20137684D32SqfR22p.png
       go get github.com/gin-gonic/gin

5. golang裝GORM框架 (簡化資料庫DB操作套件)

  1. 進去go的容器(因為是go的套件)
    https://ithelp.ithome.com.tw/upload/images/20240108/20137684H9vvaMKuUr.png
       docker exec -i -t 7f26d119 bash
  1. 安裝GORM
    https://gorm.io/zh_CN/docs/index.html
       go get -u gorm.io/gorm
       go get -u gorm.io/driver/sqlite

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言